package com.aqie.rabbit.service;

import com.aqie.rabbit.bean.card.GroupMemberCard;
import com.aqie.rabbit.bean.card.UserCard;
import com.aqie.rabbit.bean.db.GroupMember;
import com.aqie.rabbit.bean.db.Message;
import com.aqie.rabbit.bean.db.User;

import java.util.List;
import java.util.Set;

public interface IPushService {
    // 发送一条消息，消息中包含发送类型, 并在当前的发送历史记录中存储记录
    void pushNewMessage(User sender, Message message);


    /**
     * 通知一些成员，被加入了XXX群
     * @param members
     */
    void pushJoinGroup(Set<GroupMember> members);

    /**
     * 通知老成员，有一系列新的成员加入到某个群
     */
    void pushGroupMemberAdd(Set<GroupMember> oldMembers, List<GroupMemberCard> insertCards);


    /**
     * 推送账户退出消息
     * @param receiver
     * @param pushId
     */
    void pushLogout(User receiver, String pushId);

    /**
     * 给一个朋友推送我的信息过去
     * 类型是：我关注了他
     * @param receiver
     * @param userCard
     */
    void pushFollow(User receiver, UserCard userCard);
}
